Operations of data transposition between vector type and scalar type data are inevitable in most graphic engine interfaces, since both data types are advantageous in certain aspects. For instance, a “scalar machine” which operates data complying with the scalar type inside a GPU shader needs a dedicated transposition engine to perform the data transformation between vector and scalar data sets for communicating with data path outside the GPU shader which complies with the vector type. The performance and efficiency will therefore drop due to additional instructions and hardware required for transposing data while inputting the vector data to the GPU shader and outputting the scalar data from the GPU shader. In contrast, a “vector machine” which operates data complying with the vector type inside the GPU shader is capable of communicating with the GPU non-shader without a need of data transposition; nevertheless, the vector machine is not welcome in a system pursuing high efficiency because the average dimension of input data may be lower than the predetermined specification.
To eliminate the aforementioned dilemma, a design that supports both scalar and vector access may be a competitive solution. Thus, there is a strong motivation for proposing a scalar and vector data mutual-transposition mechanism that bears both the advantages of the scalar and vector machines.